home *** CD-ROM | disk | FTP | other *** search
- Path: druid.borland.com!usenet
- From: pete@borland.com (Pete Becker)
- Newsgroups: comp.lang.c
- Subject: Re: fast find algorithm
- Date: 8 Apr 1996 20:04:24 GMT
- Organization: Borland International
- Message-ID: <4kbrg8$luu@druid.borland.com>
- References: <Dp8wE6.8DG@cix.compulink.co.uk> <PdvZxMlyZE9U088yn@ime.usp.br> <4k9ggs$4ov@news1.mnsinc.com>
- NNTP-Posting-Host: pbecker.borland.com
- Mime-Version: 1.0
- Content-Type: Text/Plain; charset=ISO-8859-1
- X-Newsreader: WinVN 0.99.5
-
- In article <4k9ggs$4ov@news1.mnsinc.com>, huang@mnsinc.com says...
- >
- >Rogerio Brito (rbrito@ime.usp.br) wrote:
- >: huang@mnsinc.com (Szu-Wen Huang) wrote:
- >: >Falstaff (falstaff@xs4all.nl) wrote:
- >: >...
- >: >: Hashing is slightly slower than straight table lookup and can't be
- >: >: used when you want to delete elements from your table.
- >: >...
- >
- >: >Hashing can't be used when you want to delete elements? Please explain.
- >
- >: I think he is refering to elimination of the item of some
- >: table. In such case, you should change your hash
- >: function. But if you don't have memory problems, you can
- >: simply ignore the location after it is "deleted". Or
- >: depending on the implementation, you can simply unlink it
- >: from your linked list (if it is the case, of course).
- >
- >Hash tables need to have null entries so the search will know that
- >the item doesn't exist. I don't see why it is difficult to find
- >the item to be deleted and overwrite it with the null entry. As
- >you said, it'll work on linked lists, but it will work also on array
- >implementations.
-
- It depends on what you use to resolve conflicting hash values for different
- elements. If you resolve conflicts by rehashing, or by moving to the next
- available entry in the hash array, or any other mechanism that uses the array
- itself as the storage location for the conflicting value, then you can't delete
- items, cause once you do there's no way to get to the ones that used to
- conflict. The first one you try will map to your now-empty location, and it'll
- look like it wasn't found.
- If you use a linked list at each array location to resolve conflicts then
- you can delete elements.
-
-